<div class="box-page-container">
  <div class="box-page-header">
    <div class="title">Редактирование новости</div>
    <div class="other-controls right">
    </div>
  </div>
  <div class="box-page-body">
    <div class="box-message" id="message" style="display: none"></div>
    <div class="form">
        <dt id="title-label"><label for="title" class="required">Заголовок:</label></dt>
        <dd id="title-element"><input type="text" name="title" id="title" value="<?php echo $this->news->title ?>"><p class="description"></p></dd>
        <dd id="text-element"><textarea name="text" id="text"><?php echo stripslashes($this->news->content) ?></textarea></dd>
        <h3>Прикрепленные файлы:</h3>
        <ul id="attachment-list" style="display: none"></ul>
        <dd><input name="fileToUpload[]" id="file_upload" class="MultiFile" type="file"/></dd>
    </div>
	<div class="caption">Группы:</div>
	<div class="info">
		<p>Укажите группы для которых будет видна данная новость.
		Если группы не указаны, то, новость будет видна для всех.</p>
	</div>
    <table class="table" id="group-list">
      <thead>
        <tr>
          <th width="120px">Заголовок</th>
          <th>Описание</th>
          <th width="30px"></th>
        </tr>
      </thead>
      <tbody>
        <?php foreach ($this->groups as $group): ?>
		  <?php if ($group->id != 1 && $group->id != 2 && $group->id != 4): ?>
          <tr id="<?php echo $group->id ?>">
            <td><?php echo $group->title ?></td>
            <td><?php echo $group->description ?></td>
            <td><input type="checkbox" /></td>
          </tr>
		  <?php endif; ?>
        <?php endforeach; ?>
      </tbody>
    </table>
	<div class="caption">Комментарии:</div>
    <table class="table" id="comment-list">
      <thead>
        <tr>
          <th width="120px">Автор</th>
          <th>Содержание</th>
		  <th width="100px">Создано</th>
          <th width="10px"><input type="checkbox"  onclick="selectCheckbox(this);" /></th>
        </tr>
      </thead>
      <tbody>
		<?php if (count($this->comments) <= 0): ?>
			<tr>
				<td colspan="4"><div align="center">Новость еще не комментировали.</div></td>
			</tr>
		<?php else: foreach ($this->comments as $comment): ?>
			<tr id="<?php echo $comment->id ?>">
				<td><?php 
					if ($comment->author_id != 1) {
						echo $comment->findParentRow('Model_User')->name;
					} else {
						echo $comment->name;
					}
				?></td>
				<td><?php echo stripslashes($comment->text) ?></td>
				<td><?php 
					$date = new Zend_Date($comment->created, false, Pidguin_Application::getInstance()->getLocale());
					echo $date->toString('dd MMMM YYYYг. в HH:mm');
				?></td>
				<td>
					<input type="checkbox" />
				</td>
			</tr>
		<?php endforeach; endif; ?>
      </tbody>
    </table>
	<div class="btn" style="margin-top: 5px;"><button onclick="addComment(this, '<?php echo $this->news->id ?>'); return false;" class="primary">Написать комментарий</button></div>
		<div class="right">
			<div class="btn" style="margin-top: 5px;"><button onclick="deleteComments(this); return false;" class="gray">Удалить</button></div>
		</div>
  </div>
  <div class="box-page-footer">
    <div class="box-controls">
	  <div class="right">
       	<div class="btn"><button onclick="save(this, '<?php echo $this->news->id ?>'); return false;" class="primary">Сохранить</button></div>
      </div>
      <div id="progress_ajax" class="progress ajax-preloader-base"></div>
      <div id="control_text" class="box-controls-text"></div>
      <div class="clear-fix"></div>
    </div>
  </div>
  <div class="clear-fix"></div>
</div>
<link rel="stylesheet" href="/css/jquery.cleditor.css" />
<link rel="stylesheet" type="text/css" href="/css/mediaelementplayer.css">
<link rel="stylesheet" type="text/css" href="/css/mejs-skins.css">
<style>
@import url(/css/uploadify.css);
.form input {
  width: 280px;
}
</style>
<script src="/js/jquery/jquery.cleditor.min.js"></script>
<script src="/js/jquery/cleditor/plugins.audio.js"></script>
<script src="/js/jquery/cleditor/plugins.video.js"></script>
<script src="/js/jquery/cleditor/plugins.page_break.js"></script>
<script src="/js/jquery/jquery.uploadify.js"></script>
<script>
var attachments = <?php echo $this->attachments ?>;
$.each(attachments, function(){
    addAttachs(this);
});
var a = $.parseJSON('<?php echo $this->inGroups ?>');
for (var i = 0; a.length > i; i++) {
	$('#' + a[i].groupId, '#group-list').find('input[type="checkbox"]').attr('checked', 'checked');
}
$("#text").cleditor({width:'', height:300, useCSS:true, imagePath: '/images/'});
$('#file_upload').uploadify({
	'formData': {'sid': '<?php echo $this->client->sid ?>'},
	'debug'	   : false,
	'buttonText': 'Выбрать файлы...',
	'removeCompleted': true,
	'fileSizeLimit' : '50MB',
	'fileTypeExts' : '*.gif; *.jpg; *.png; *.jpeg; *.mp3; *.avi; *.mp4; *.3gp; *.mpeg; *.txt; *.doc; *.docx; *.xls; *.xlsx; *.ppt; *.pptx; *.rtf; *.pdf; *.rar; *.psd',
    'swf'      : '/js/jquery/uploadify/uploadify.swf',
    'uploader' : '/cp/attachments/upload.attachment',
    'onUploadSuccess' : function(file, data, response) {
        addAttachs($.parseJSON(data));
    }
});
$('.form #title').keyup(function(){
	var val = $(this).val();
	var message = '';
	if (!val) {
		message = '<span style="color: red;">Пожалуйста, укажите заголовок новости!</span>';
	}
	var regexp = /^[a-zа-я0-9_\s\:\;\"\'\,\?\!\(\)\+\*\=\-\.]*$/i;
	if (!regexp.test(val)) {
		message = '<span style="color: red;">Не верный формат заголовка новости!<p>Только английский, русский алфавиты, пробел, цифры и знаки "-", "_", ".", ":", ";", ",", "?", "!", "(", ")", "+", "*", "=".</p></span>';
	}
	$('#title-element .description').html(message);
});

$('#file_upload-button').css({
    'height': '20px',
    'line-height': '20px',
    'width': '90px'
});
function addAttachs(data) {
    html = '<li id="'+data.id+'">';
    if (data.type == 'image') {
        html+= '<img src="/images/file-types/image.png" width="16"/ >';
    } else if (data.type == 'doc') {
    	html+= '<img src="/images/file-types/document.png" width="16"/ >';
    } else if (data.type == 'audio') {
    	html+= '<img src="/images/file-types/audio.png" width="16"/ >';
    } else if (data.type == 'video') {
    	html+= '<img src="/images/file-types/video.png" width="16"/ >';
    } else if (data.type == 'other') {
    	html+= '<img src="/images/file-types/other.png" width="16"/ >';
    }
    html+= '<span>' + data.url + '</span>';
    html+= '<span style="float: right;"><a href="' + data.url + '" target="_blank">Открыть</a> <a href="#" onclick="deleteAttach(this, '+data.id+'); return false;">Удалить</a><div id="progress" style="display: none;" class="progress ajax-preloader-base"></div></span>';
    html+= '</li>';
    $('#attachment-list').show().append(html);
}
function deleteAttach(el, id) {
	$(el).parent().find('a').hide().parent().find('#progress').show();
	$.getJSON('/cp/attachments/delete.attach', {'id': id}, function(response){
		if (typeof response.status == 'string' && response.status == 'ok') {
			$(el).parent().parent().remove();
		}
	});
}
function save(el, id) {
    var msgBox = goog.dom.$('message');
    var title = $('.form #title').val();
	var groups = $('input[type="checkbox"]:checked', '#group-list');
    var text = $('.form #text').val();
    if (!title) {
    	$('.form #title').focus();
    }
    if (!title || !text) {
    	msgBox.innerHTML = '<p>Все поля обязательны для заполнения.</p>';
		fx = new goog.fx.dom.FadeInAndShow(msgBox, 200);
		fx.play();
		return false;
    }
	if (msgBox.innerHTML != '') {
		fx = new goog.fx.dom.FadeOutAndHide(msgBox, 200);
		fx.play();
		msgBox.innerHTML = '';
	}
	var groupId = [];
	groups.each(function(){
		groupId.push($(this).parent().parent().attr('id'));
	});
	var attachmentsElements = $('#attachment-list>li');
	var attachments = [];
	if (attachmentsElements.length > 0) {
    	attachmentsElements.each(function(){
        	attachments.push($(this).attr('id'));
        });
	}
	$('#progress_ajax').show();
	$('#control_text').hide();
	$(el).hide();
	$.ajax({
		"url": "/cp/news/edit.save",
		"type": "POST",
		"dataType": "json",
	    "data": {
			"id": id,
        	'title': title,
        	'text': text,
        	'groups': groupId,
			'attachments': attachments
        },
		"success": function(response) {
			$('#progress_ajax').hide();
			$(el).hide();
			$('.box-page-body').html('Новость <b>' + title + '</b> сохранена. <a href="/cp/news">Перейти к списку новостей</a>, <a href="/cp/news/create">Создать новость</a>');
		},
		"error": function(response) {
			$('#progress_ajax').hide();
			$(el).show();
			$('#control_text').html('Во время обработки запроса, возникли ошибки.').show();
			setTimeout(function(){
				$('#control_text').hide()
			}, 4000);
		}
	});
}
// comments
var ca = new goog.ui.Dialog(null, true);
var cac = 'Введите текст:<textarea style="width: 410px; height: 90px" id="comment-text"></textarea>';
ca.setContent(cac);
ca.setTitle('Добавить комментарий');
ca.setButtonSet(
	new goog.ui.Dialog.ButtonSet()
	.addButton({key: 'add', caption: 'Добавить'}, true)
	.addButton({key: 'close', caption: 'Закрыть'}, false, true)
);
goog.events.listen(ca, goog.ui.Dialog.EventType.SELECT, function(e){
	if (e.key == 'add') {
		var text = $('#comment-text').val();
		if (!text) {
			$('#comment-text').focus();
			return false;
		}
		$.ajax({
			"url": "/cp/news/add.comment",
			"type": "POST",
			"dataType": "json",
			"data": {
				"id": window.location.search.replace('?id=', ''),
				'text': text
			},
			"success": function(response) {
				var html = '';
				html += '<tr id="' + response.comment.id + '">';
				html += '<td>' + response.comment.author + '</td>';
				html += '<td>' + response.comment.text + '</td>';
				html += '<td>' + response.comment.created + '</td>';
				html += '<td><input type="checkbox"></td>';
				html += '</tr>';
				$('#comment-list').append(html);
				ca.setVisible(false);
			},
			"error": function(response) {
				alert('Возникла какая-то ошибка');
			}
		});
	}
});
function addComment(el, id) {
	ca.setVisible(true);
	$(ca.getElement()).css({'width': '450px', 'top': (document.height / 2) + 70 + 'px', 'left': (document.width / 2) - 225 + 'px'});
	$('#comment-text').focus();
}
function deleteComments(el) {
	var checked = $('#comment-list tbody input:checkbox:checked');
	if (checked.length <= 0) {
		alert("Пожалуйста выберите хотя бы один комментарий для удаления.");
		return false;
	}
	var commentId = [];
	checked.each(function(){
		commentId.push($(this).parent().parent().attr('id'));
	});
	var htmlOld = $(el).parent().parent().html();
	var parent = $(el).parent().parent();
	parent.html('<div id="progress_ajax" style="margin-top: 5px; margin-right: 5px;" class="progress ajax-preloader-base"></div>');
	$.getJSON('/cp/news/delete.comment', {
		"id": window.location.search.replace('?id=', ''),
		"comments": commentId
	}, function(response){
		parent.html(htmlOld);
		if (response.status == 'ok') {
			checked.each(function(){
				$(this).parent().parent().remove();
			});
		}
	});
}
function selectCheckbox(el) {
	if ($(el).prop('checked')) {
		$(el).parent().parent().parent().parent().find('tbody').find('input:checkbox').attr("checked","checked");
	} else {
		$(el).parent().parent().parent().parent().find('tbody').find('input:checkbox').removeAttr("checked");
	}
}
</script>
